Dokumentation anzeigen
Der Tabellenpflegedialog hat einige kleine Ungereimtheiten. Dazu gehört zum Beispiel auch, dass man keine Möglichkeiten hat, die Dokumentation der Tabelle anzusehen. Wäre das so, so könnte man hier den Zweck und Pflegehinweise hinterlegen. Mit einer kleinen Programmierung – die zwecks Mehrfachverwendung einfach in einer Methode gekapselt werden kann – wird dem Anwender die Hilfe in einem Docking-Fenster angezeigt.
So sieht das Ergebnis in etwa aus:
Vorgehen
Gehen Sie in den Tabellenpflegedialog und wählen Sie Umfeld – Modifikation – Zeitpunkte.
Tragen Sie dann den Zeitpunkt “19” ein:
Springen Sie in den Editor und legen Sie das folgende Coding an:
*** GLOBALE DATEN DATA gr_docking TYPE REF TO cl_gui_docking_container. DATA gr_control TYPE REF TO cl_gui_html_viewer. DATA gt_lines TYPE STANDARD TABLE OF tline. *&---------------------------------------------------------------------* *& Form zz_show_docu *&---------------------------------------------------------------------* FORM zz_show_docu. *** LOKALE DATEN DATA lv_size TYPE i. DATA ls_header TYPE thead. DATA lt_html TYPE STANDARD TABLE OF htmlline. DATA lv_url TYPE c LENGTH 500. DATA lv_viewname TYPE dokhl-object. *** DOCKING CONTROL BEREITS ERZEUGT? IF gr_docking IS INITIAL. MOVE x_header-viewname TO lv_viewname. *** Lesen der Doku zur Tabelle CALL FUNCTION 'DOCU_GET' EXPORTING id = 'TB' langu = sy-langu object = lv_viewname IMPORTING head = ls_header TABLES line = gt_lines EXCEPTIONS OTHERS = 5. IF gt_lines IS INITIAL. *** Keine Doku da: Control mit größe 0 erzeugen lv_size = 0. ELSE. *** Doku vorhanden: Breite 400 Pixel lv_size = 400. ENDIF. *** Dockingcontainer erzeugen CREATE OBJECT gr_docking EXPORTING side = cl_gui_docking_container=>dock_at_right extension = lv_size no_autodef_progid_dynnr = 'X'. IF gt_lines IS NOT INITIAL. *** HTML-Control erzeugen CREATE OBJECT gr_control EXPORTING parent = gr_docking. *** Doku in HTML umwandeln CALL FUNCTION 'CONVERT_ITF_TO_HTML' EXPORTING i_header = ls_header TABLES t_itf_text = gt_lines t_html_text = lt_html EXCEPTIONS syntax_check = 1 replace = 2 illegal_header = 3 OTHERS = 4. IF sy-subrc = 0. *** HTML-Daten ins Control schieben CALL METHOD gr_control->load_data IMPORTING assigned_url = lv_url CHANGING data_table = lt_html EXCEPTIONS OTHERS = 4. IF sy-subrc = 0. *** Und HTML-Text anzeigen CALL METHOD gr_control->show_url EXPORTING url = lv_url. ENDIF. ENDIF. ENDIF. ENDIF. ENDFORM.
Hinweis:
Wenn man in die Tabellenpflege mit SM30 einsteigt, dann bleibt der Dockingcontainer erhalten. Machen Sie am besten eine Transaktion daraus und dann sieht es wirklich professionell aus.
Viewcluster
Bei der Verwendung in einem Viewcluster muss der Zeitpunkt 03 verwendet werden.
Viewcluster benötigen ein eigenes Programm, in dem das Coding abgelegt wird. Hier muss das Include LSVCMCOD eingebunden werden, damit Sie Zugriff auf alle notwendigen Daten des Viewclusters haben.
Tipp:
Lagern Sie die Funktion in eine Methode aus und übergeben Sie den Namen der gerade aktiven Tabelle (VCL_AKT_VIEW). Dann können Sie in der Methode prüfen, ob die Tabelle gewechselt wurde und in diesem Fall die entsprechende Dokumentation nachlesen.
Tipps zur Formatierung
Das Layout des Textes ist nacktes HTML und entspricht so gar nicht dem der üblichen Hilfe in SAP. Wenn du die Formatierung anpassen möchtest, kannst du dir die Klasse CL_EPSS_SAPEVENT bzw. deren Methode LINES_DISPLAY mal ansehen. Hier wird der HTML-Text für die SAP Hilfe generiert. Verwendet werden hierfür die Funktiosnbausteine SE_CONVERT_ITF_TO_HTML und EPSS_STYLE_RECEIVE. Das Umwandeln von SAP-Ikonen wurde zwar auch versuchsweise nachgebaut, ist für die Anzeige aber eher nur nettes Beiwerk.
- 7. December: Excel Racing Simulation – Root Vole Race - 7. Dezember 2024
- 5. December: ABAPConf - 5. Dezember 2024
- 4. December: Only a lazy developer is a good developer - 4. Dezember 2024
Für Zeitpunkt 13 kann zusätzlîch z.B. die FORM ZZ_AT_LEAVE implementiert werden, um den Docking Container zu initialisieren. Damit bleibt dieser auch beim Verlassen in SM30 nicht stehen.
FORM zz_at_leave.
gr_docking->free( ).
clear gr_docking.
ENDFORM.